// 快捷键管理工具

export interface ShortcutConfig {
  screenshot: string
}

// 默认快捷键配置
export const DEFAULT_SHORTCUTS: ShortcutConfig = {
  screenshot: 'Ctrl+Alt+A'
}

// 快捷键预设
export const SHORTCUT_PRESETS = [
  { label: 'Ctrl+Alt+A', value: 'Ctrl+Alt+A', description: '默认（类似 QQ 截图）' },
  { label: 'Ctrl+Shift+A', value: 'Ctrl+Shift+A', description: '类似微信截图' },
  { label: 'Alt+A', value: 'Alt+A', description: '简单组合' },
  { label: 'Ctrl+Alt+X', value: 'Ctrl+Alt+X', description: '备用方案 1' },
  { label: 'Ctrl+Shift+X', value: 'Ctrl+Shift+X', description: '备用方案 2' },
  { label: 'F1', value: 'F1', description: '功能键' },
  { label: 'F2', value: 'F2', description: '功能键' }
]

const STORAGE_KEY = 'screenshot-tool-shortcuts'

/**
 * 获取当前快捷键配置
 */
export function getShortcuts(): ShortcutConfig {
  try {
    const stored = localStorage.getItem(STORAGE_KEY)
    if (stored) {
      return JSON.parse(stored)
    }
  } catch (error) {
    console.error('读取快捷键配置失败:', error)
  }
  return { ...DEFAULT_SHORTCUTS }
}

/**
 * 保存快捷键配置
 */
export function saveShortcuts(config: ShortcutConfig): void {
  try {
    localStorage.setItem(STORAGE_KEY, JSON.stringify(config))
    console.log('快捷键配置已保存:', config)
  } catch (error) {
    console.error('保存快捷键配置失败:', error)
    throw error
  }
}

/**
 * 重置为默认快捷键
 */
export function resetShortcuts(): ShortcutConfig {
  const defaults = { ...DEFAULT_SHORTCUTS }
  saveShortcuts(defaults)
  return defaults
}

/**
 * 验证快捷键格式是否有效
 */
export function isValidShortcut(shortcut: string): boolean {
  if (!shortcut || typeof shortcut !== 'string') return false
  
  // 基本格式检查：至少包含一个修饰键或功能键
  const validModifiers = ['Ctrl', 'Alt', 'Shift', 'Command', 'CommandOrControl']
  const validFunctionKeys = ['F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12']
  
  const parts = shortcut.split('+')
  if (parts.length === 0) return false
  
  // 如果是功能键，单独也可以
  if (parts.length === 1 && validFunctionKeys.includes(parts[0])) {
    return true
  }
  
  // 否则必须至少有一个修饰键
  const hasModifier = parts.some(part => validModifiers.includes(part))
  const hasKey = parts.length >= 2
  
  return hasModifier && hasKey
}

/**
 * 转换快捷键为 Electron 格式
 * 前端: Ctrl+Alt+A
 * Electron: CommandOrControl+Alt+A
 */
export function convertToElectronFormat(shortcut: string): string {
  if (!shortcut) return shortcut
  
  // 将 Ctrl 替换为 CommandOrControl（跨平台兼容）
  let electronShortcut = shortcut.replace(/\bCtrl\b/g, 'CommandOrControl')
  
  console.log('快捷键格式转换:', shortcut, '->', electronShortcut)
  return electronShortcut
}

